var WeixinPay = (function($) {
	var s,
	settings = {
		isLoading: true,
		applicationId: $('#applicationId').val(),
		submitBtn: $('.js-pay')
	};
	
	/**
	 * 初始化模块
	 */
	var fire = function() {
		s = settings;
		_wxConfig();
		_bindUIActions();
	};
	
	/**
	 * 绑定UI事件
	 */
	var _bindUIActions = function() {
		var self = this;
		s.submitBtn.on('click', function(event) {
			event.preventDefault();
			_submitPayment();
		});
	}

	var _wxConfig = function() {
		var self = this;
		$.ajax({
			url: '/weixin/ajax/getWeixinSign.ajax',
			type: 'POST',
			dataType: 'json',
			data: {url: location.href},
			success: function(respond) {
				wx.config({
					debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
					appId: respond.appId, // 必填，公众号的唯一标识
					timestamp: respond.timestamp, // 必填，生成签名的时间戳
					nonceStr: respond.nonceStr, // 必填，生成签名的随机串
					signature: respond.signature,// 必填，签名，见附录1
					jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
				});
				s.isLoading = false;
			}
		});
	}

	var _submitPayment = function() {
		var self = this;

		if( s.isLoading ) {
			return;
		}
		s.isLoading = true;
		
		$.ajax({
			url: '/weixin/pay/getNewOrderInfo.ajax',
			type: 'POST',
			dataType: 'json',
			data: {applicationId: s.applicationId},
			success: function(res) {
				console.log(res);
				wx.chooseWXPay({
					appId: res.appid,
					timestamp: res.timestamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
					nonceStr: res.nonce_str, // 支付签名随机串，不长于 32 位
					package: 'prepay_id=' + res.prepay_id, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
					signType: 'MD5', // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
					paySign: res.sign, // 支付签名
					success: function (res) {
						// 支付成功后的回调函数
						if(res.errMsg == 'chooseWXPay:ok') {
							// 支付成功
							window.location = '/main/pay/competeByQuery?applicationId=' + s.applicationId;

						} else if(res.errMsg == 'chooseWXPay:cancel') {
							// 支付取消
							alert('支付取消');
						} else if(res.errMsg == 'chooseWXPay:fail') {
							// 支付失败
							alert('支付失败');
						}
						s.isLoading = false;
					}
				});
			}
		});
	}

	return {
		fire: fire
	}
	
})(Zepto);